ヘッダーをスキップ
Oracle TimesTen In-Memory Database推奨されたプログラミングの実行
リリース6.0
B25772-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

XLAトピック

この章では、次の項目について説明します。

永続XLAの使用

TimesTenでは2種類のXLAがサポートされています。永続XLA(ttXlaPersistOpen関数で接続している場合)と非永続XLA(ttXlaOpenTimesTen関数で接続している場合)です。ほぼすべての点で、永続XLAの方が非永続XLAよりも優れています。

注意: この章のXLAの説明は、すべて永続XLAを指します。

XLAの常時監視

レプリケーションと同様に、XLAには注意深い監視が必要です。

XLAプロセス監視の重要性

各XLA接続では、トランザクション・ログにブックマークが保持されます。これらのXLAプロセスの1つが停止すると、そのブックマークがログ・ファイルに常駐し、ブックマークが進行されるか削除されるまで、そのログ・ファイルおよび今後の全ログ・ファイルはチェックポイント処理によって削除できません。

したがって、停止した永続XLAプロセスによってログ・ファイルが蓄積され、ディスクが一杯になり、追加のログ・ファイルが書き込めずにデータ・ストアの障害を引き起こす原因となることがあります。一杯になったディスクのリカバリの詳細は、「一杯になったディスクのリカバリ」を参照してください。

TTClassesでは、ttXlaAdminという便利なコマンドライン・ユーティリティが提供されています。これによって、データ・ストア内のXLAブックマークのリスト(データ・ストアごとに保持されているログ・ファイルの数を示します)が作成され、必要に応じてユーザーはこれを削除できます。TTClassesの詳細は、『Oracle TimesTen In-Memory Database TTClassesガイド』を参照してください。

ttXlaAcknowledgeを使用した、XLAの更新確認

特定のXLAリーダーで読み取られたもの(および読み取られなかったもの)に対して、トランザクション・ログにブックマークを保持することによって、XLAは永続的になります。このブックマークは、1つのXLAリーダーが複数のXLAレコードのセットを受け取る際には、進行されないことに注意してください。これは、XLAリーダーがこれらのレコードを処理する前に停止した場合に、それに対処するための意図的な動作です。

ブックマークを進行させるためには、XLAリーダーがXLAレコードのバッチを明示的に確認する必要があります。これは、XLAのttXlaAcknowledge関数で実行します。ユーザーのプログラムでこの関数を定期的にコールしない場合は、XLAブックマークを進行できず、前述の項目で説明したディスク領域不足の問題が発生します。ただし、次のXLAパフォーマンスに関する項で説明するように、この関数は頻繁にコールしないでください。

TTClassesメソッドのTTXlaPersistConnection::ackUpdates()は、ttXlaAcknowledgeのラッパーです。ackUpdatesを使用したデモについては、TTClassesのサンプル・プログラムxlaSimpleを参照してください。TTClassesの詳細は、『Oracle TimesTen In-Memory Database TTClassesガイド』を参照してください。

XLAのパフォーマンスの最大化

XLAは、データ・ストアにおける1つまたは複数の表について、その変更の通知を受信する柔軟性に優れた強力なフレームワークです。ただし、次の項目を考慮しない場合、XLAアプリケーションのパフォーマンスが低下する可能性があります。

ttXlaAcknowledgeの使用(ただし頻繁には使用しない)

XLAのttXlaAcknowledge関数はすべてのXLAアプリケーションの基礎となる部分です。これによって、XLAブックマークが進行され、トランザクション・ログがチェックポイントによってパージされます。

ただし、ttXlaAcknowledgeは比較的多くのリソースを消費します。したがって、ttXlaNextUpdate(またはttXlaNextUpdateWait)によってXLAレコードのバッチが返されるごとに、コールしないでください。

この関数をコールする頻度は、アプリケーションのビジネス・ロジックとリカバリ要件およびパフォーマンス要件とのバランスによって異なります。比較的スループット要件が低いアプリケーションの場合は、ttXlaNextUpdate[Wait]がレコードを10回返すたびにttXlaAcknowledgeをコールしても問題ありません。ただし、最大のスループットが必要な場合は、これらの2つの関数は1:100の割合で実行することをお薦めします。